package base.caseDemo01;

import cn.hutool.core.util.StrUtil;

import java.util.List;

public class RealDemo {
  // 记录key变化前的 第一个条数据
  private RecordInfo firstDataWhenKeyChange;
  
  public void apply(List<RecordInfo> list) {
    for (RecordInfo item : list)
      this.applySingle(item);
    
    if (firstDataWhenKeyChange != null)
      outPrintAFile(firstDataWhenKeyChange);
  }
  
  // 这个内容是出力到文件A（如果是相同数据的第一条，出力到这个文件）
  public void outPrintAFile(RecordInfo recordInfo) {
    System.out.println("A 文件:" + recordInfo);
  }
  
  // 这个内容是出力到文件B（如果是相同数据的其余的内容，出力到这个文件）
  public void outPrintBFile(RecordInfo recordInfo) {
    System.out.println("B 文件:" + recordInfo);
  }
  
  public void applySingle(RecordInfo recordInfo) {
    // 判断 变量【firstDataWhenKeyChange】 是否为null 默认第一次肯定是null
    if (firstDataWhenKeyChange == null) {
      firstDataWhenKeyChange = recordInfo;
    } else {
      // 判断 当前key  以及上一次的key 是否相同
      boolean isKeySame = StrUtil.equals(recordInfo.getKey(), firstDataWhenKeyChange.getKey());
      // 如果是key相同的话，肯定是保存到文件B中
      if (isKeySame) {
        outPrintBFile(recordInfo);
      } else {
        // 这里保存到文件A中
        
        // 这里 将第一条数据 出力到文件A中
        outPrintAFile(firstDataWhenKeyChange);
        
        firstDataWhenKeyChange = recordInfo;
      }
    }
  }
}
